PL/SQL编程

您所在的位置:网站首页 sql 修改存储过程 PL/SQL编程

PL/SQL编程

2024-06-30 07:16| 来源: 网络整理| 查看: 265

概念:

        存储过程,简称“存储”或者“存过”,是一种命名的PL/SQL程序块,也是工作中用到最多的命名块,数据库中的大多数程序都是以存储过程的形式存放在数据库里。相较于匿名块,存储过程(及其他命名块)有个非常大的不同:存储过程在开始调用时,可以传入一些输入参数,存储过程会依据输入参数来决定程序如何运行,而且在调用结束时,存储过程还会根据程序运行情况返回一些输出参数。存储过程不能被SQL语句直接调用,需要通过EXECUTE命令调用或通过PL/SQL块调用。因为存储过程是已经在数据库中编译好的程序,所以会比普通的匿名块运行效率更高。

参数:分为IN、OUT和IN OUT三种。

1.IN参数(输入参数)

IN模式参数是一种输入类型的参数,用于接收调用方写入的实参。它是数据库最常见也是默认的一种参数。

语法:

CREATE [OR REPLACE] PROCEDURE PRO_NAME (

                           I_NAME1 [IN] DATA_TYPE DEFAULT DEF_VAL,

                           I_NAME2 [IN] DATA_TYPE DEFAULT DEF_VAL,

                                        ...

                                        )

 IS|AS

2.OUT(输出参数)

OUT模式参数是一种输出类型的参数,这个参数在程序调用过程中会被赋予内容,并在调用结束后返回该值。

实际项目中,OUT参数常常用来返回存储过程的执行状态,比如用0表示执行成功,用1表示执行失败。其他类型的返回内容往往是在后续将要学到的存储函数中出现。

OUT参数在调用时需要给予相应数量的变量用来接收返回值,所以在调用带有OUT参数的存储过程时,往往是通过TEST窗口或者PL/SQL匿名块来调用。

Ps:OUT参数在声明时必须加上OUT关键词,否则会被认作IN参数。

3.IN OUT参数(输入输出参数)

IN参数能够用来接收调用方传入的内容,OUT参数能够用来接收存储过程返回的内容,二者各司其职、互不干扰,但从某种角度来说,也是造成了参数浪费。而IN OUT参数则是结合了两者的优势,它既能在程序调用时用来接收传入的内容,在程序运行过程中也能用来接收返回内容,实现了“一参两用”。

Ps:

IN OUT参数在声明时必须加上IN OUT关键词,否则会被认作IN参数;

IN OUT参数无论是在输入时还是输出时,都只有一个数据类型。

实例:

--输入一个日期,返回这个日期所在月的最后一天 CREATE OR REPLACE PROCEDURE SP_LASTDAY(I_DATE VARCHAR2,O_DATE OUT VARCHAR2) IS V_ERRM varchar2(50); BEGIN   --判断输入格式是否正确   IF LENGTH(I_DATE)8 THEN     DBMS_OUTPUT.PUT_LINE('输入格式不对,正确格式:YYYYMMDD');   END IF;   O_DATE:=LAST_DAY(TO_DATE(I_DATE,'YYYY-MM-DD'));   DBMS_OUTPUT.PUT_LINE('该日期的月末日期为:'||O_DATE);   EXCEPTION     WHEN OTHERS THEN       V_ERRM:=SQLERRM;       DBMS_OUTPUT.PUT_LINE(V_ERRM); END SP_LASTDAY;--调用这个存储过程 --1 DECLARE V_DATE VARCHAR2(25); BEGIN   SP_LASTDAY('20220101',V_DATE); END;



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3